| United States Patent Application |
20090286549
|
| Kind Code
|
A1
|
|
Canon; Stephen Tyrone
;   et al.
|
November 19, 2009
|
Location Determination
Abstract
Systems, methods, and computer program products obtain power information
indicating a detected power of respective signals received in a mobile
device from multiple transmitters. Using at least the obtained power
information, respective probability values for a plurality of positions
are determined, each probability value indicating a probability that the
mobile device is in a corresponding position. An estimated position of
the mobile device is identified based at least in part on the determined
probability values.
| Inventors: |
Canon; Stephen Tyrone; (Menlo Park, CA)
; Sazegari; Ali; (Cupertino, CA)
|
| Correspondence Name and Address:
|
FISH & RICHARDSON P.C.
PO BOX 1022
MINNEAPOLIS
MN
55440-1022
US
|
| Assignee Name and Adress: |
Apple Inc.
Cupertino
CA
|
| Serial No.:
|
122339 |
| Series Code:
|
12
|
| Filed:
|
May 16, 2008 |
| U.S. Current Class: |
455/456.1 |
| U.S. Class at Publication: |
455/456.1 |
| Intern'l Class: |
H04Q 7/20 20060101 H04Q007/20 |
Claims
1. A method comprising:obtaining power information indicating a detected
power of respective signals received in a mobile device from multiple
transmitters;determining, using at least the obtained power information,
respective probability values for a plurality of positions, each
probability value indicating a probability that the mobile device is in a
corresponding position; andidentifying an estimated position of the
mobile device based at least in part on the determined probability
values.
2. The method of claim 1, wherein determining the probability values and
identifying the estimated position comprise:generating a statistical
model based at least in part on the obtained power information;selecting
a geographical region to which the generated statistical model applies;
andrandomly or pseudo randomly selecting a plurality of positions within
the selected geographical region, wherein each of the probability values
is identified as being associated with a corresponding one of the
plurality of positions.
3. The method of claim 2, further comprising:determining that a previous
location of the mobile device has been registered,wherein the
geographical region is selected taking into account the registered
previous location.
4. The method of claim 2, further comprising:determining a first
transmitter, among the multiple transmitters, having a strongest signal
according to the obtained power information,wherein the geographical
region is selected taking into account a location of the determined first
transmitter.
5. The method of claim 2, wherein multiple previous location
determinations have been performed, the method further
comprising:generating an error estimate for a most recent of the previous
location determinations,wherein the geographical region is selected
taking into account the generated error estimate.
6. The method of claim 2, wherein the statistical model is configured to
have at least one term added and be taken into account in determining the
probability values.
7. The method of claim 6, further comprising:for each of the multiple
transmitters, adding a term to the statistical model, the term reflecting
that a conditional probability that the mobile device is a distance d
from the respective transmitter follows a log-normal distribution,
wherein a mean and a standard deviation of the log-normal distribution
are functions of the power of the respective transmitter.
8. The method of claim 7, further comprising:obtaining a training data set
comprising signal strength information regarding known locations;
andestimating the functions for the mean and the standard deviation using
the obtained training data set.
9. The method of claim 6, further comprising:for each pair of the multiple
transmitters, adding a term to the statistical model, the term reflecting
that a conditional probability that the mobile device is at a distance d
from a point on a line joining the pair of the multiple transmitters
follows a log-normal distribution, wherein a mean and a standard
deviation are functions of the powers of the respective two transmitters.
10. The method of claim 9, further comprising:obtaining a training data
set comprising signal strength information regarding known locations;
andestimating the functions for the mean and the standard deviation using
the obtained training data set.
11. The method of claim 6, further comprising:obtaining a previously
estimated location for the mobile device; andadding a term to the
statistical model, the term reflecting that a conditional probability
that the mobile device is at a distance d from the previously estimated
location follows a radially symmetric Gaussian distribution about the
previously estimated location.
12. The method of claim 11, wherein a standard deviation of the radially
symmetric Gaussian distribution is based on an error estimate and on
information about how recently the previously estimated location was
identified.
13. The method of claim 6, further comprising:obtaining geographical
information relating to at least one of the plurality of positions;
andadding a term to the statistical model based on the obtained
geographical information.
14. The method of claim 13, wherein the geographical information provides
a bias toward some locations over other locations.
15. The method of claim 1, wherein identifying the estimated position
comprises:selecting one of the determined probability values that is
associated with a highest probability that the mobile device is in the
corresponding position.
16. The method of claim 1, wherein identifying the estimated position
comprises:determining a centroid location based on the determined
probability values; andselecting the determined centroid location as the
estimated position.
17. The method of claim 1, further comprising:determining that additional
power information is required to identify the estimated
position;postponing the identification of the estimated position for a
period of time; andcollecting the additional power information, wherein
the estimated position of the mobile device is identified based also on
the additional power information.
18. A computer program product, encoded on a tangible program carrier,
operable to cause a portable device to perform operations
comprising:obtaining power information indicating a detected power of
respective signals received in a mobile device from multiple
transmitters;determining, using at least the obtained power information,
respective probability values for a plurality of positions, each
probability value indicating a probability that the mobile device is in
the corresponding position; andidentifying an estimated position of the
mobile device based at least in part on the determined probability
values.
19. A mobile device comprising:a processor-accessible medium containing
power information that indicates a detected power of respective signals
received in a mobile device from multiple transmitters; anda position
estimator that 1) determines, using at least the obtained power
information, respective probability values for a plurality of positions,
each probability value indicating a probability that the mobile device is
in the corresponding position; and 2) identifies an estimated position of
the mobile device based at least in part on the determined probability
values.
Description
BACKGROUND
[0001]This specification is related generally to location determination.
[0002]The increased importance of processor-based devices has made
navigation services and other forms of location determination available
to a substantial number of users. For example, online services are now
available that can provide maps, directions, navigation information and
other information relating to the geography of places on Earth and also
in the sky.
[0003]Some devices are intended for portable use and are therefore
sometimes referred to as mobile. Some of them rely on a form of radio
communication to connect to a home station, a network or some other base,
with which information can be exchanged. With some mobile devices the
range of radio signal coverage is substantial and the users can therefore
operate the device anywhere in a significant geographic area. This
ability to move around with the device also increases the need to
determine the location of the device, to a more or less exact geographic
position. Some technologies have been introduced in this regard,
including Global Positioning System (GPS) and other approaches that use
signals from transmitters on the ground.
SUMMARY
[0004]The present invention relates to location determination of a mobile
device. A statistical model is built based on the measured power levels
(e.g., signal strength) of signals received by a mobile device from one
or more transmitters and their respective locations. Other information,
such as the last known or estimated location of the mobile device, and/or
geographical information, can also be used to build the statistical
model. The statistical model is then used to determine the likelihood
that the mobile device is located at one or more randomly or pseudo
randomly selected positions within a region surrounding a last known
location of the mobile device, or a region surrounding a reference point
(e.g., a cellular transmission tower) near the mobile device. The
probability that the mobile device is at the selected positions is used
to estimate the location of the mobile device.
[0005]In a first aspect, one method includes the actions of obtaining
power information indicating a detected power of respective signals
received in a mobile device from multiple transmitters, determining,
using at least the obtained power information, respective probability
values for a plurality of positions, each probability value indicating a
probability that the mobile device is in a corresponding position, and
identifying an estimated position of the mobile device based at least in
part on the determined probability values.
[0006]Implementations can include any, all or none of the following
features. Determining the probability values and identifying the
estimated position can include generating a statistical model based at
least in part on the obtained power information, selecting a geographical
region to which the generated statistical model applies, and randomly or
pseudo randomly selecting a plurality of positions within the selected
geographical region, where each of the probability values is identified
as being associated with a corresponding one of the plurality of
positions. According to another feature, the method can also include
determining that a previous location of the mobile device has been
registered, where the geographical region is selected taking into account
the registered previous location.
[0007]According to yet another feature, the method includes the actions of
determining a first transmitter, among the multiple transmitters, having
a strongest signal according to the obtained power information, where the
geographical region is selected taking into account a location of the
determined first transmitter. According to still another feature, where
multiple previous location determinations have been performed, the method
can include generating an error estimate for a most recent of the
previous location determinations, where the geographical region is
selected taking into account the generated error estimate.
[0008]In another feature, the statistical model is configured to have at
least one term added and be taken into account in determining the
probability values. Additionally, for each of the multiple transmitters,
a term can be added to the statistical model, the term reflecting that a
conditional probability that the mobile device is a distance d from the
respective transmitter follows a log-normal distribution, where a mean
and a standard deviation of the log-normal distribution are functions of
the power of the respective transmitter. According to another feature,
the method includes obtaining a training data set that includes signal
strength information regarding known locations, and estimating the
functions for the mean and the standard deviation using the obtained
training data set.
[0009]According to a feature, for each pair of the multiple transmitters,
a term can be added to the statistical model, the term reflecting that a
conditional probability that the mobile device is at a distance d from a
point on a line joining the pair of the multiple transmitters follows a
log-normal distribution, where a mean and a standard deviation are
functions of the powers of the respective two transmitters. According to
yet another feature, the method can include the actions of obtaining a
training data set comprising signal strength information regarding known
locations, and estimating the functions for the mean and the standard
deviation using the obtained training data set.
[0010]In another feature the method can include the actions of obtaining a
previously estimated location for the mobile device, and adding a term to
the statistical model, the term reflecting that a conditional probability
that the mobile device is at a distance d from the previously estimated
location follows a radially symmetric Gaussian distribution about the
previously estimated location. The standard deviation of the radially
symmetric Gaussian distribution can be based on an error estimate and on
information about how recently the previously estimated location was
identified.
[0011]According to still another feature, the method can include the
actions of obtaining geographical information relating to at least one of
the plurality of positions, and adding a term to the statistical model
based on the obtained geographical information. The geographical
information can provide a bias toward some locations over other
locations. Further, identifying the estimated position can include the
actions of selecting one of the determined probability values that is
associated with a highest probability that the mobile device is in the
corresponding position, and/or determining a centroid location based on
the determined probability values, and selecting the determined centroid
location as the estimated position.
[0012]According to yet another feature, the method can include determining
that additional power information is required to identify the estimated
position, postponing the identification of the estimated position for a
period of time, and collecting the additional power information, wherein
the estimated position of the mobile device is identified based also on
the additional power information.
[0013]These general and specific aspects may be implemented using a
system, a method, or a computer program, or any combination of systems,
methods, and computer programs.
[0014]Particular embodiments of the subject matter described in this
specification can be implemented to realize none, one or more of the
following advantages. Improved location determination can be provided.
[0015]The details of one or more embodiments of the subject matter
described in this specification are set forth in the accompanying
drawings and the description below. Other features, aspects, and
advantages of the subject matter will become apparent from the
description, the drawings, and the claims.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016]FIG. 1 is a block diagram of an example mobile device.
[0017]FIG. 2 is a block diagram of an example network operating
environment for the mobile device of FIG. 1.
[0018]FIG. 3 is a block diagram of an example implementation of the mobile
device of FIG. 1.
[0019]FIG. 4 shows a schematic illustration of a mobile device and four
exemplary transmitters.
[0020]FIG. 5 shows the signal and/or location information used to generate
a statistical model.
[0021]FIG. 6A is a flow chart of an example first process of determining
the contribution to the statistical model based on the measured power
levels from one or more transmitters and the location of the one or more
transmitters.
[0022]FIG. 6B is a flow chart of an example second process of determining
the contribution to the statistical model based on the measured power
levels from one or more transmitters and the location of the one or more
transmitters.
[0023]FIG. 7 shows an example of a process to estimate the location of a
mobile device.
[0024]FIG. 8 shows an illustrative map display on an example mobile
device.
[0025]Like reference numbers and designations in the various drawings
indicate like elements.
DETAILED DESCRIPTION
[0026]FIG. 1 is a block diagram of an example mobile device 100. The
mobile device 100 can be, for example, a handheld computer, a personal
digital assistant, a cellular telephone, a network appliance, a camera, a
smart phone, an enhanced general packet radio service (EGPRS) mobile
phone, a network base station, a media player, a navigation device, an
email device, a game console, or a combination of any two or more of
these data processing devices or other data processing devices. Below
will be described examples of determining the location of a device such
as the mobile device 100. For example, the location can be determined
using a statistical model that takes into account at least received
signal strength.
[0027]In some implementations, the mobile device 100 includes a
touch-sensitive display 102. The touch-sensitive display 102 can
implement liquid crystal display (LCD) technology, light emitting polymer
display (LPD) technology, or some other display technology. The touch
sensitive display 102 can be sensitive to haptic and/or tactile contact
with a user.
[0028]In some implementations, the touch-sensitive display 102 can
comprise a multi-touch-sensitive display 102. A multi-touch-sensitive
display 102 can, for example, process multiple simultaneous touch points,
including processing data related to the pressure, degree, and/or
position of each touch point. Such processing facilitates gestures and
interactions with multiple fingers, chording, and other interactions.
Other touch-sensitive display technologies can also be used, e.g., a
display in which contact is made using a stylus or other pointing device.
Some examples of multi-touch-sensitive display technology are described
in U.S. Pat. Nos. 6,323,846, 6,570,557, 6,677,932, and 6,888,536, each of
which is incorporated by reference herein in its entirety.
[0029]In some implementations, the mobile device 100 can display one or
more graphical user interfaces on the touch-sensitive display 102 for
providing the user access to various system objects and for conveying
information to the user. In some implementations, the graphical user
interface can include one or more display objects 104, 106. In the
example shown, the display objects 104, 106, are graphic representations
of system objects. Some examples of system objects include device
functions, applications, windows, files, alerts, events, or other
identifiable system objects.
[0030]In some implementations, the mobile device 100 can implement
multiple device functionalities, such as a telephony device, an e-mail
device, a network data communication device, a Wi-Fi base station device
(not shown), and a media processing device. In some implementations,
particular display objects 104 can be displayed in a menu bar 118. In
some implementations, device functionalities can be accessed from a
top-level graphical user interface, such as the graphical user interface
illustrated in FIG. 1. Touching one of the objects 104 can, for example,
invoke corresponding functionality.
[0031]In some implementations, the mobile device 100 can implement network
distribution functionality. For example, the functionality can enable the
user to take the mobile device 100 and provide access to its associated
network while traveling. In particular, the mobile device 100 can extend
Internet access (e.g., Wi-Fi) to other wireless devices in the vicinity.
For example, mobile device 100 can be configured as a base station for
one or more devices. As such, mobile device 100 can grant or deny network
access to other wireless devices.
[0032]In some implementations, upon invocation of device functionality,
the graphical user interface of the mobile device 100 changes, or is
augmented or replaced with another user interface or user interface
elements, to facilitate user access to particular functions associated
with the corresponding device functionality. For example, in response to
a user touching a phone object, the graphical user interface of the
touch-sensitive display 102 may present display objects related to
various phone functions; likewise, touching of an email object may cause
the graphical user interface to present display objects related to
various e-mail functions; touching a Web object may cause the graphical
user interface to present display objects related to various Web-surfing
functions; and touching a media player object may cause the graphical
user interface to present display objects related to various media
processing functions.
[0033]In some implementations, the top-level graphical user interface
environment or state of FIG. 1 can be restored by pressing a button 120
located near the bottom of the mobile device 100. In some
implementations, each corresponding device functionality may have
corresponding "home" display objects displayed on the touch-sensitive
display 102, and the graphical user interface environment of FIG. 1 can
be restored by pressing the "home" display object.
[0034]In some implementations, the top-level graphical user interface can
include additional display objects 106, such as a short messaging service
(SMS) object, a calendar object, a photos object, a camera object, a
calculator object, a stocks object, a weather object, a maps object 144,
a notes object, a clock object, an address book object, and a settings
object. Touching the maps object 144 can, for example, invoke a mapping
and location-based services environment and supporting functionality;
likewise, a selection of any of the display objects 106 can invoke a
corresponding object environment and functionality.
[0035]Additional and/or different display objects can also be displayed in
the graphical user interface of FIG. 1. For example, if the device 100 is
functioning as a base station for other devices, one or more "connection"
objects may appear in the graphical user interface to indicate the
connection. In some implementations, the display objects 106 can be
configured by a user, e.g., a user may specify which display objects 106
are displayed, and/or may download additional applications or other
software that provides other functionalities and corresponding display
objects.
[0036]In some implementations, the mobile device 100 can include one or
more input/output (I/O) devices and/or sensor devices. For example, a
speaker 160 and a microphone 162 can be included to facilitate
voice-enabled functionalities, such as phone and voice mail functions. In
some implementations, an up/down button 184 for volume control of the
speaker 160 and the microphone 162 can be included. The mobile device 100
can also include an on/off button 182 for a ring indicator of incoming
phone calls. In some implementations, a loud speaker 164 can be included
to facilitate hands-free voice functionalities, such as speaker phone
functions. An audio jack 166 can also be included for use of headphones
and/or a microphone.
[0037]In some implementations, a proximity sensor 168 can be included to
facilitate the detection of the user positioning the mobile device 100
proximate to the user's ear and, in response, to disengage the
touch-sensitive display 102 to prevent accidental function invocations.
In some implementations, the touch-sensitive display 102 can be turned
off to conserve additional power when the mobile device 100 is proximate
to the user's ear.
[0038]Other sensors can also be used. For example, in some
implementations, an ambient light sensor 170 can be utilized to
facilitate adjusting the brightness of the touch-sensitive display 102.
In some implementations, an accelerometer 172 can be utilized to detect
movement of the mobile device 100, as indicated by the directional arrow
174. Accordingly, display objects and/or media can be presented according
to a detected orientation, e.g., portrait or landscape. In some
implementations, the mobile device 100 may include circuitry and sensors
for supporting a location determining capability, such as that provided
by the Global Positioning System (GPS) or other positioning systems
(e.g., systems using Wi-Fi access points, television signals, cellular
grids, Uniform Resource Locators (URLs)). In some implementations, a
positioning system (e.g., a GPS receiver) can be integrated into the
mobile device 100 or provided as a separate device that can be coupled to
the mobile device 100 through an interface (e.g., port device 190) to
provide access to location-based services.
[0039]In some implementations, a port device 190, e.g., a Universal Serial
Bus (USB) port, or a docking port, or some other wired port connection,
can be included. The port device 190 can, for example, be utilized to
establish a wired connection to other computing devices, such as other
communication devices 100, network access devices, a personal computer, a
printer, a display screen, or other processing devices capable of
receiving and/or transmitting data. In some implementations, the port
device 190 allows the mobile device 100 to synchronize with a host device
using one or more protocols, such as, for example, the TCP/IP, HTTP, UDP
and any other known protocol.
[0040]The mobile device 100 can also include a camera lens and sensor 180.
In some implementations, the camera lens and sensor 180 can be located on
the back surface of the mobile device 100. The camera can capture still
images and/or video.
[0041]The mobile device 100 can also include one or more wireless
communication subsystems, such as an 802.11b/g communication device 186,
and/or a Bluetooth.TM. communication device 188. Other communication
protocols can also be supported, including other 802.x communication
protocols (e.g., WiMax, Wi-Fi, 3G), code division multiple access (CDMA),
global system for mobile communications (GSM), Enhanced Data GSM
Environment (EDGE), etc.
[0042]FIG. 2 is a block diagram of an example network operating
environment 200. In FIG. 2, mobile devices 202a and 202b each can
represent mobile device 100. Mobile devices 202a and 202b can, for
example, communicate over one or more wired and/or wireless networks 210
in data communication. For example, a wireless network 212, e.g., a
cellular network, can communicate with a wide area network (WAN) 214,
such as the Internet, by use of a gateway 216. Likewise, an access device
218, such as an 802.11g wireless access device, can provide communication
access to the wide area network 214. In some implementations, both voice
and data communications can be established over the wireless network 212
and the access device 218. For example, the mobile device 202a can place
and receive phone calls (e.g., using VoIP protocols), send and receive
e-mail messages (e.g., using POP3 protocol), and retrieve electronic
documents and/or streams, such as web pages, photographs, and videos,
over the wireless network 212, gateway 216, and wide area network 214
(e.g., using TCP/IP or UDP protocols). Likewise, in some implementations,
the mobile device 202b can place and receive phone calls, send and
receive e-mail messages, and retrieve electronic documents over the
access device 218 and the wide area network 214. In some implementations,
the mobile device 202a or 202b can be physically connected to the access
device 218 using one or more cables and the access device 218 can be a
personal computer. In this configuration, the mobile device 202a or 202b
can be referred to as a "tethered" device.
[0043]The mobile devices 202a and 202b can also establish communications
by other means. For example, the wireless device 202a can communicate
with other wireless devices, e.g., other mobile devices 202a or 202b,
cell phones, etc., over the wireless network 212. Likewise, the mobile
devices 202a and 202b can establish peer-to-peer communications 220,
e.g., a personal area network, by use of one or more communication
subsystems, such as the Bluetooth.TM. communication devices 188 shown in
FIG. 1. Other communication protocols and topologies can also be
implemented.
[0044]The mobile device 202a or 202b can, for example, communicate with
one or more services 230, 240, 250, 260, and 270 over the one or more
wired and/or wireless networks 210. For example, one or more navigation
services 230 can provide navigation information, e.g., map information,
location information, route information, and other information, to the
mobile device 202a or 202b. A user of the mobile device 202b can invoke a
map functionality, e.g., by pressing the maps object 144 on the top-level
graphical user interface shown in FIG. 1, and can request and receive a
map for a particular location, request and receive route directions, or
request and receive listings of businesses in the vicinity of a
particular location, for example. In other implementations, location
determination can be performed locally on the mobile device 202a or 202b.
For example, the navigation service 230 can be implemented on the mobile
device 202a or 202b.
[0045]A messaging service 240 can, for example, provide e-mail and/or
other messaging services. A media service 250 can, for example, provide
access to media files, such as song files, audio books, movie files,
video clips, and other media data. In some implementations, separate
audio and video services (not shown) can provide access to the respective
types of media files. A syncing service 260 can, for example, perform
syncing services (e.g., sync files). An activation service 270 can, for
example, perform an activation process for activating the mobile device
202a or 202b. Other services can also be provided, including a software
update service that automatically determines whether software updates
exist for software on the mobile device 202a or 202b, then downloads the
software updates to the mobile device 202a or 202b where the software
updates can be manually or automatically unpacked and/or installed.
[0046]The mobile device 202a or 202b can also access other data and
content over the one or more wired and/or wireless networks 210. For
example, content publishers, such as news sites, RSS feeds, web sites,
blogs, social networking sites, developer networks, etc., can be accessed
by the mobile device 202a or 202b. Such access can be provided by
invocation of a web browsing function or application (e.g., a browser) in
response to a user touching, for example, a Web object.
[0047]FIG. 3 is a block diagram 300 of an example implementation of the
mobile device 100 of FIG. 1. The mobile device 100 can include a memory
interface 302, one or more data processors, image processors and/or
central processing units 304, and a peripherals interface 306. The memory
interface 302, the one or more processors 304 and/or the peripherals
interface 306 can be separate components or can be integrated in one or
more integrated circuits. The various components in the mobile device 100
can be coupled by one or more communication buses or signal lines.
[0048]Sensors, devices, and subsystems can be coupled to the peripherals
interface 306 to facilitate multiple functionalities. For example, a
motion sensor 310, a light sensor 312, and a proximity sensor 314 can be
coupled to the peripherals interface 306 to facilitate the orientation,
lighting, and proximity functions described with respect to FIG. 1. Other
sensors 316 can also be connected to the peripherals interface 306, such
as a positioning system (e.g., GPS receiver), a temperature sensor, a
biometric sensor, or other sensing device, to facilitate related
functionalities.
[0049]A camera subsystem 320 and an optical sensor 322, e.g., a charged
coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)
optical sensor, can be utilized to facilitate camera functions, such as
recording photographs and video clips.
[0050]Communication functions can be facilitated through one or more
wireless communication subsystems 324, which can include radio frequency
receivers and transmitters and/or optical (e.g., infrared) receivers and
transmitters. The specific design and implementation of the communication
subsystem 324 can depend on the communication network(s) over which the
mobile device 100 is intended to operate. For example, a mobile device
100 may include communication subsystems 324 designed to operate over a
GSM network, a GPRS network, an EDGE network, a Wi-Fi or WiMax network,
and a Bluetooth.TM. network. In particular, the wireless communication
subsystems 324 may include hosting protocols such that the device 100 may
be configured as a base station for other wireless devices. In some
implementations, a strength of signals received using any or all of the
communication subsystems 324 can be determined; power information
indicating such strength can be obtained and used in estimating a
location of the mobile device 100.
[0051]An audio subsystem 326 can be coupled to a speaker 328 and a
microphone 330 to facilitate voice-enabled functions, such as voice
recognition, voice replication, digital recording, and telephony
functions.
[0052]The I/O subsystem 340 can include a touch screen controller 342
and/or other input controller(s) 344. The touch-screen controller 342 can
be coupled to a touch screen 346. The touch screen 346 and touch screen
controller 342 can, for example, detect that contact and/or movement
begins or ends using any of a plurality of touch sensitivity
technologies, including but not limited to capacitive, resistive,
infrared, and surface acoustic wave technologies, as well as other
proximity sensor arrays or other elements for determining one or more
points of contact with the touch screen 346.
[0053]The other input controller(s) 344 can be coupled to other
input/control devices 348, such as one or more buttons, rocker switches,
thumb-wheel, infrared port, USB port, and/or a pointer device such as a
stylus. The one or more buttons (not shown) can include an up/down button
for volume control of the speaker 328 and/or the microphone 330.
[0054]In one implementation, a pressing of the button for a first duration
may disengage a lock of the touch screen 346; and a pressing of the
button for a second duration that is longer than the first duration may
turn power to the mobile device 100 on or off. The user may be able to
customize a functionality of one or more of the buttons. The touch screen
346 can, for example, also be used to implement virtual or soft buttons
and/or a keyboard.
[0055]In some implementations, the mobile device 100 can present recorded
audio and/or video files, such as MP3, AAC, and MPEG files. In some
implementations, the mobile device 100 can include the functionality of
an MP3 player, such as an iPod.TM.. The mobile device 100 may, therefore,
include a 36-pin connector that is compatible with the iPod. Other
input/output and control devices can also be used.
[0056]The memory interface 302 can be coupled to memory 350. The memory
350 can include high-speed random access memory and/or non-volatile
memory, such as one or more magnetic disk storage devices, one or more
optical storage devices, and/or flash memory (e.g., NAND, NOR). The
memory 350 can store an operating system 352, such as Darwin, RTXC,
LINUX, UNIX, OS X, WINDOWS, or an embedded operating system such as
VxWorks. The operating system 352 may include instructions for handling
basic system services and for performing hardware dependent tasks. In
some implementations, the operating system 352 can be a kernel (e.g.,
UNIX kernel).
[0057]The memory 350 may also store communication instructions 354 to
facilitate communicating with one or more additional devices, one or more
computers and/or one or more servers. The memory 350 may include
graphical user interface instructions 356 to facilitate graphic user
interface processing; sensor processing instructions 358 to facilitate
sensor-related processing and functions; phone instructions 360 to
facilitate phone-related processes and functions; electronic messaging
instructions 362 to facilitate electronic-messaging related processes and
functions; web browsing instructions 364 to facilitate web
browsing-related processes and functions; media processing instructions
366 to facilitate media processing-related processes and functions;
GPS/Navigation instructions 368 to facilitate GPS and navigation-related
processes and instructions; camera instructions 370 to facilitate
camera-related processes and functions; and/or other software
instructions 372 to facilitate other processes and functions, e.g.,
security processes and functions. In some implementations, some or all of
the instruction 368 can be executed to cause a location of the mobile
device 100 to be determined, for example by selecting a location
determination technique to be used. The instructions 358 can be
configured so that also one or more, or all, of the other instructions in
the memory 350 can be used in performing a function. The memory 350 may
also store other software instructions (not shown), such as web video
instructions to facilitate web video-related processes and functions;
and/or web shopping instructions to facilitate web shopping-related
processes and functions. In some implementations, the media processing
instructions 366 are divided into audio processing instructions and video
processing instructions to facilitate audio processing-related processes
and functions and video processing-related processes and functions,
respectively. An activation record and International Mobile Equipment
Identity (IMEI) 374 or similar hardware identifier can also be stored in
memory 350.
[0058]Each of the above identified instructions and applications can
correspond to a set of instructions for performing one or more functions
described above. These instructions need not be implemented as separate
software programs, procedures, or modules. The memory 350 can include
additional instructions or fewer instructions. Furthermore, various
functions of the mobile device 100 may be implemented in hardware and/or
in software, including in one or more signal processing and/or
application specific integrated circuits.
[0059]FIG. 4 shows a schematic illustration of four exemplary transmitters
400-1 through 400-4 and a mobile device 402. Here, the mobile device 402
can represent a mobile device such as the mobile devices described above
with respect to FIGS. 1-3. The mobile device 402 can communicate with one
or more of the transmitters 400 which can include network access points,
e.g., Wi-Fi base station devices, or a cell tower, or a remote
transmitter such as a satellite, to name a few examples. In some
implementations, access points can be any combination of 802.11b/g
wireless routers, 802.11n wireless routers, and some other Wi-Fi devices
that implement any suitable Wi-Fi or other wireless networking technology
or protocol.
[0060]Using the communication with the access points and/or the cell
towers, a position estimator 404 can estimate the geographic area and/or
location where the mobile device 402 is currently located. The estimation
can be based at least in part on signal and/or location information 406,
including the signal strengths of the respective transmitters 400-1
through 400-4. In this example the information 406 can be located on the
mobile device 402. In other implementations, the position estimator 404
and/or the signal and/or location information 406 can be maintained
elsewhere than on the mobile device 402, such as on a server device in
communication with the mobile device.
[0061]The mobile device 402 can, for example, receive a signal from the
transmitter 400-1. The signal can include an identifier for the
transmitter 400-1 and in some implementations can include other
information, such as the latitude and longitude of the transmitter 400-1.
In some implementations, the latitude and longitude of the transmitter
can be determined on the device 402 or remotely at a server using a
database. The position estimator 406 can, for example, with a degree of
uncertainty or error, identify an estimated position of the mobile device
402 using the information 406.
[0062]In some implementations, the accuracy or precision of the estimated
position is stated in units of distance (e.g., "the estimated position is
accurate up to 50 meters"). That is, the actual position of the mobile
device 402 can be within the accuracy distance from the estimated
position. For example, a first geographic area can be a circle centered
at the latitude and longitude of the estimated position with a radius
equal to the stated accuracy or precision (e.g., 38 meters if the
accuracy of the estimated position is up to 38 meters). The first
geographic area can alternatively be represented on a map display as a
square, rectangle, oval, diamond, triangle, or some other shaped enclosed
region.
[0063]The mobile device 402 can, for example, connect to additional
devices or services (not shown) for location-based services, instead of,
or in addition to the transmitter(s) 400. Such devices or services could
include a Bluetooth.TM. device, GPS, radio or TV towers, or cellular
grids, to name a few examples. For example, the mobile device 402 can
connect to peer devices with the Bluetooth.TM. communication device 188
(FIG. 1) and receive location-based information from other mobile devices
and/or Bluetooth.TM. enabled devices. In some implementations, the mobile
device 402 can determine or estimate its position and/or geographic area
using other technologies (e.g., GPS).
[0064]In some implementations, position estimates are generated using a
statistical model, for instance, by the position estimator 404. Such a
model can be based at least in part on power information regarding one or
more transmitters. The model can be used to generate a distribution of
one or more position samples that are used to estimate the current
location of the mobile device as explained in greater detail below.
[0065]A. Statistical Model Components
[0066]FIG. 5 shows the signal and/or location information 406 that can be
used to generate a statistical model 530 that is used to estimate the
location of a mobile device, such as mobile device 406. According to some
implementations, the statistical model 530 is generated by the position
estimator 404. As described with respect to FIG. 4, the measured power
levels (i.e., signal strength) of signals received by the device from one
or more transmitters 505 and the location of known transmitters 510 are
used to generate the statistical model 530.
[0067]For instance, the mobile device 402 can obtain received signal
strength indicators (RSSIs) and a unique ID associated with each signal
from a transmitter. The geographical location of the transmitter (e.g., a
cell tower) can be looked up using the transmitter ID, either by querying
a remote server or by a lookup process in a database stored on the mobile
device. If a cell tower contains several transmitters, their RSSIs can be
combined to a single RSSI for the cell tower, for example by taking a
maximum of the received signals from the transmitters at issue.
[0068]In some implementations, a transformation can be applied to
coordinates of the transmitters. For example, latitude-longitude pairs
can be transformed into values representing relative transmitter
location, such as with regard to a transmitter having the strongest
signal. That is, in some implementations a latitude-longitude pair can be
transformed to meters North and meters East from the transmitter with the
strongest signal.
[0069]Referring again to FIG. 5, other information can optionally be used
to generate the statistical model 530. This includes historical position
information 515 and/or geographical information 520.
[0070]Historical position information 515 can be used to generate and/or
modify the statistical model 530, for instance, by the position estimator
404. Historical position information 515 (which includes recently known
location information) can be based on previous estimate locations, for
instance, as determined by the position estimator 404, and/or based on
position information obtained from other data sources in communication
with the device 402. For instance, historical position information 515
can be obtained from wifi hotspots or from other devices, such as GPS
units, that can perform location estimation. Historical position
information 515 can contribute to the statistical model so that the model
can account for last known positions of the device 402. As explained in
greater detail below with respect to FIG. 6, recent known locations of
the device 402 are presumed to be more accurate than old measurements,
and thus how recent the position information factors into the statistical
model.
[0071]Geographical information 520 can also be used to focus a probability
determination to location points that are more likely locations for the
mobile device than another location. This information provides a bias to
locations that the device is more likely to be near. For instance,
locations such as a highway or a populated area, such as a shopping mall,
may be biased over locations that the device 402 is less likely to be
near, such as in the middle of city blocks, in the middle of a lake, on a
service road, etc.
[0072]B. Signal Strength and Transmitter Locations Contribution to a
Statistical Model
[0073]FIG. 6A shows a first process 600 of determining the contribution to
the statistical model 530 based on the measured power levels (e.g.,
signal strength) of signals received by the device from one or more
transmitters 505 and the location of known transmitters 510. Each source
(e.g., tower) from which a signal is received by the device is identified
605. A term is added to the statistical model for each source 620 based
on the identified location of each source 610 and the identified signal
strength received from each source 615. In some implementations, the term
added to the statistical model for each source is based on an assumption
that the conditional probability that the device is located at a distance
d from a source follows a log-normal distribution having mean and
standard deviations that are functions of the signal strength associated
with the source.
[0074]According to some implementations, a training set of data is
obtained that includes measured signal strengths, such as RSSI data, at
known locations, such as at known distances from a transmitter. According
to some implementations, the training set of data is gathered by a mobile
device having a GPS receiver, where the mobile device logs respective
transmitter signal strengths at various locations (e.g., thousands of
locations) near one or more towers having differing geometries (e.g.,
height, orientation, etc.) The training set can be gathered once.
According to some implementations the training data can be used to
generate parameters for the statistical model, as described below, where
the parameters are stored on each mobile device. According to some
implementations, the training set of data can be stored by mobile devices
or stored remotely at a server using a database. Signals for several
hundred thousand data points can be collected and included in the
training set. The mean and standard deviation functions can be estimated
from the training data set of measured signal strengths at known
locations for example, via a standard least-squares fitting algorithm.
[0075]FIG. 6B shows a second process 650 of determining the contribution
to the statistical model 530 based on the measured power levels (e.g.,
signal strength) of signals received by the device from one or more
transmitters 505 and the location of known transmitters 510. Pairs of
sources from which a signal is received by the device are identified 605.
According to some implementations, all possible pairs of towers for which
the device receives signals are considered. For instance, if there are
three towers A, B, and C, the pairs A,B, A,C, and B,C will be considered.
[0076]A term is added to the statistical model for pairs of sources 670
based on the identified location of each pair of sources 660 and the
identified signal strength received from each source 665. The term added
to the statistical model for each pair of sources reflects that a
conditional probability that the mobile device is at a distance d from a
point `p` on a line joining the pair of the multiple transmitters follows
a log-normal distribution having mean and standard deviations that are
functions of a signal strength ratio between the two transmitters in the
pair. The location of the point `p`, mean, and standard deviation are
estimated from a training data set of measured signal strengths at known
locations for example, via a standard least-squares regression.
[0077]It will be appreciated that although least-squares regression is
described herein for the first and second processes 600, 650 of
determining the contribution to the statistical model 530 based on the
measured power levels (i.e., signal strength) of signals received by the
device from one or more transmitters 505 and the location of known
transmitters 510, other techniques including other regression techniques
can be used to calculate the parameters of the statistical model.
[0078]C. Historical Position Information and/or Geographical Information
Contribution to a Statistical Model
[0079]As described with respect to FIG. 5, historical position information
515 can optionally be used to generate and/or modify the statistical
model 530. According to some implementations, a term can be added to the
statistical model that reflects that a conditional probability that the
mobile device is at a given location relative to the historical
position(s) follows a radially symmetric Gaussian distribution about the
previously known location, with standard deviation based on an accuracy
estimate of the known location (if available), together with information
on how recent the known location measurement was taken. For instance,
recent measurements can be presumed to be more accurate than old
measurements.
[0080]As was further described with respect to FIG. 5, geographical
information 520 can be used to add an additional term to the statistical
model that provides a bias to locations that the mobile device has a
greater likelihood to be near.
[0081]D. Estimating Location Using a Statistical Model
[0082]According to some implementations, to compute the likelihood that
the mobile device is at a given location given all of the terms in the
statistical model, the logarithm of the unnormalized conditional
probability of each term is computed for a given location. These
logarithms are summed to give a log-likelihood for a given position.
However, because the mobile device can be at any geographical position,
the log-likelihood for given positions are only calculated for a set of
positions that are in a region surrounding the last known position, or
last estimated position, of the mobile device. This permits the position
estimator 404 to limit the number of calculations required to estimate
the location of the mobile device.
[0083]FIG. 7 shows a high level method 700 that can be performed to
determine an estimated location of a mobile device using a statistical
model. If historical position information is known 705, a region
surrounding the last known position of the mobile device is identified
710. According to some implementations, the region can be a circular
region surrounding the mobile device. An error estimate for the last
known position of the mobile device can also be generated. Sample
positions are then selected (i.e., drawn) at random or pseudo randomly
from the identified region 715.
[0084]Alternatively, if no historical position information is available
705, the transmitter that exhibits the strongest measured signal strength
at the mobile device is identified 720, and sample positions are then
selected (i.e., drawn) at random or pseudo randomly from a region
surrounding the transmitter that includes the transmitter 725. According
to some implementations, the calculation of a region surrounding the last
known position of the mobile device, or the region surrounding the
transmitter exhibiting the strongest signal strength at the mobile
device, can be made by the position estimator 404. Similarly, the
position estimator 404 can select sample positions within the region.
[0085]After sample positions are selected, the probability values for each
sample position are determined using the statistical model 730. According
to some implementations, the probability values can be determined by the
position estimator 404. As described with respect to FIGS. 5 and 6, the
statistical model is based on the measured power levels (i.e., signal
strength) of signals received by the device from one or more transmitters
505 and the location of known transmitters 510. The model is optionally
also based on historical position information 515 and geographical
information 520. The respective probability values for each sample
position indicate a probability that the mobile device is in the
corresponding position. These probability values, in turn, can be used to
identify an estimated position of the mobile device.
[0086]According to some implementations, the sample position exhibiting
the highest probability value is selected 735, and the estimated position
is identified 745 as that sample position. According to some
implementations, the estimated position 745 can be identified as the
calculated centroid of the distribution of sample positions 740 based on
the probability values of each sample position included in the random (or
pseudo-random) selection
[0087]According to some implementations, an error estimate for the
estimated position is identified 750, which can be a function of the
log-likelihood having parameters based on a training corpus of known
locations and signal measurements via least-squares regression. It will
be appreciated that although least-squares regression is described herein
that other techniques including other regression techniques can be used
to calculate the error estimate.
[0088]In some situations the mobile device may fail to receive signal
strengths from one or more known transmitters, and possibly all
transmitters. When this occurs, the calculation and identification of the
estimated position can be postponed for a period of time (e.g., 1 second,
5 seconds, 1 minute, or until a signal strength is measured). Once signal
strength measurements are available, the estimated position of the mobile
device can be identified based on the new signal strength measurements.
[0089]E. Example Log-Likelihood Computation of Sample Point
[0090]Using the process described above with respect to FIG. 7, one or
more sample positions can be identified at random or pseudo randomly as
within a region surrounding a last known position of the mobile device,
or the region surrounding the transmitter exhibiting the strongest signal
strength at the mobile device. Below is an example process for computing
the log-likelihood for one sample position.
[0091]Using the first process 600 for computing the contribution of signal
strength measurements to the log-likelihood of a sample position, each
tower contributes to the total log-likelihood of the sample position:
tower_log _likelihood = - ( log ( d ) - .mu. ( s )
) 2 2 .sigma. ( s ) 2 - log ( d )
##EQU00001##
where d is the distance between the source and the sample position, and s
is the measured signal strength from the source (as calculated, for
instance, from a corpus of training data.)
[0092]In the above equation .mu.(s) and .sigma.(s) are linear functions of
the form f(x)=a x+b, whose exact parameters (a, b) are estimated
statistically from a corpus of training data. As described above, the
training set of data includes signal strength measurements (in power) for
GPS-provided distances from a transmitter. In some implementations, to
estimate .mu.(s), the best linear fit for the log of the distance in
terms of the measured power of the signal strength can be estimated where
the parameters (a, b) can be selected to minimize the expression:
sum_(training measurements)(log(exact distance between device and
tower)-(a*measured power+b)).sup.2, and the function .mu. (s) is equal to
ax+b. In some implementations, to estimate .sigma.(s), for each distinct
power level that the mobile device can measure, a variance is computed
as: variance(power)-square_root(sum_(measurements with that power
level)(log(exact distance between device and tower)-.mu.(power)).sup.2).
Parameters (c, d) can then be selected to minimize the expression:
sum_(power levels)(variance(power)-(c*power+d)).sup.2, and the function
.sigma. (x) is equal to cx+d.
[0093]Alternatively, using the second process 650 for computing the
contribution of signal strength measurements to the log-likelihood of a
sample position, each pair of sources having respective locations T1 and
T2 and measured signal strengths s1 and s2 contribute to the total
log-likelihood of the sample position. Where the sources are ordered such
that s1>s2, and R is the ratio of s1/s2, the location of point `P` on
a line joining the pair of the multiple transmitters can be determined
as:
P = T 1 + 2 R c ( 1 - R c ) ( T 1 -
T 2 ) ##EQU00002##
where c is a parameter whose value can be estimated statistically from a
corpus of training data. If d is the distance between the sample position
and point `P`, the source-pair's contribution to the total log-likelihood
of the sample position is:
tower_log _likelihood = - ( log ( d ) - .mu. ( R )
) 2 2 .sigma. ( R ) 2 - log ( d )
##EQU00003##
where .mu.(r) and .sigma.(r) are linear functions of the form f(x)=ax+b,
whose exact parameters (a, b) are estimated statistically from a corpus
of training data as described above.
[0094]As described with respect to FIG. 5, historical position information
can optionally contribute to the statistical model. In this example,
history position information contributes to the likelihood of a sample
point. A radius r for the expected location about the historically known
location is computed based on the accuracy estimate of the old location
and the time since that estimate was made. If the distance between a
sample point and the historical location is d, the historical
contribution to the log likelihood of the sample point is:
history_log _likelihood = - d 2 r 2 ##EQU00004##
[0095]Finally, to compute the total log-likelihood of a sample position,
all of the contributing terms can be summed. Each of the above
calculations can be implemented, for instance, by the position estimator
404. As described with respect to FIG. 7, the log-likelihoods for each
sample position can be calculated in order to estimate the position of
the mobile device.
[0096]FIG. 8 shows an illustrative map display 802 on an example mobile
device 100. The map display 802 can display the estimated position 816 of
the mobile device 100 on a map to enable a user of the device 100 to
identify his or her location. The map can include one or more objects,
such as buildings, streets, geographical features, and the like, as is
known in the art.
[0097]The disclosed and other embodiments and the functional operations
described in this specification can be implemented in digital electronic
circuitry, or in computer software, firmware, or hardware, including the
structures disclosed in this specification and their structural
equivalents, or in combinations of one or more of them. The disclosed and
other embodiments can be implemented as one or more computer program
products, i.e., one or more modules of computer program instructions
encoded on a computer-readable medium for execution by, or to control the
operation of, data processing apparatus. The computer-readable medium can
be a machine-readable storage device, a machine-readable storage
substrate, a memory device, a composition of matter effecting a
machine-readable propagated signal, or a combination of one or more them.
The term "data processing apparatus" encompasses all apparatus, devices,
and machines for processing data, including by way of example a
programmable processor, a computer, or multiple processors or computers.
The apparatus can include, in addition to hardware, code that creates an
execution environment for the computer program in question, e.g., code
that constitutes processor firmware, a protocol stack, a database
management system, an operating system, or a combination of one or more
of them. A propagated signal is an artificially generated signal, e.g., a
machine-generated electrical, optical, or electromagnetic signal, that is
generated to encode information for transmission to suitable receiver
apparatus.
[0098]A computer program (also known as a program, software, software
application, script, or code) can be written in any form of programming
language, including compiled or interpreted languages, and it can be
deployed in any form, including as a stand-alone program or as a module,
component, subroutine, or other unit suitable for use in a computing
environment. A computer program does not necessarily correspond to a file
in a file system. A program can be stored in a portion of a file that
holds other programs or data (e.g., one or more scripts stored in a
markup language document), in a single file dedicated to the program in
question, or in multiple coordinated files (e.g., files that store one or
more modules, sub-programs, or portions of code). A computer program can
be deployed to be executed on one computer or on multiple computers that
are located at one site or distributed across multiple sites and
interconnected by a communication network.
[0099]The processes and logic flows described in this specification can be
performed by one or more programmable processors executing one or more
computer programs to perform functions by operating on input data and
generating output. The processes and logic flows can also be performed
by, and apparatus can also be implemented as, special purpose logic
circuitry, e.g., an FPGA (field programmable gate array) or an ASIC
(application-specific integrated circuit).
[0100]Processors suitable for the execution of a computer program include,
by way of example, both general and special purpose microprocessors, and
any one or more processors of any kind of digital computer. Generally, a
processor will receive instructions and data from a read-only memory or a
random access memory or both. The essential elements of a computer are a
processor for performing instructions and one or more memory devices for
storing instructions and data. Generally, a computer will also include,
or be operatively coupled to receive data from or transfer data to, or
both, one or more mass storage devices for storing data, e.g., magnetic,
magneto-optical disks, or optical disks. However, a computer need not
have such devices. Computer-readable media suitable for storing computer
program instructions and data include all forms of non-volatile memory,
media and memory devices, including by way of example semiconductor
memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic
disks, e.g., internal hard disks or removable disks; magneto-optical
disks; and CD-ROM and DVD-ROM disks. The processor and the memory can be
supplemented by, or incorporated in, special purpose logic circuitry.
[0101]To provide for interaction with a user, the disclosed embodiments
can be implemented on a computer having a display device, e.g., a CRT
(cathode ray tube) or LCD (liquid crystal display) monitor, for
displaying information to the user and a keyboard and a pointing device,
e.g., a mouse or a trackball, by which the user can provide input to the
computer. Other kinds of devices can be used to provide for interaction
with a user as well; for example, feedback provided to the user can be
any form of sensory feedback, e.g., visual feedback, auditory feedback,
or tactile feedback; and input from the user can be received in any form,
including acoustic, speech, or tactile input.
[0102]The disclosed embodiments can be implemented in a computing system
that includes a back-end component, e.g., as a data server, or that
includes a middleware component, e.g., an application server, or that
includes a front-end component, e.g., a client computer having a
graphical user interface or a Web browser through which a user can
interact with an implementation of what is disclosed here, or any
combination of one or more such back-end, middleware, or front-end
components. The components of the system can be interconnected by any
form or medium of digital data communication, e.g., a communication
network. Examples of communication networks include a local area network
("LAN") and a wide area network ("WAN"), e.g., the Internet.
[0103]The computing system can include clients and servers. A client and
server are generally remote from each other and typically interact
through a communication network. The relationship of client and server
arises by virtue of computer programs running on the respective computers
and having a client-server relationship to each other.
[0104]While this specification contains many specifics, these should not
be construed as limitations on the scope of what being claims or of what
may be claimed, but rather as descriptions of features specific to
particular embodiments. Certain features that are described in this
specification in the context of separate embodiments can also be
implemented in combination in a single embodiment. Conversely, various
features that are described in the context of a single embodiment can
also be implemented in multiple embodiments separately or in any suitable
subcombination. Moreover, although features may be described above as
acting in certain combinations and even initially claimed as such, one or
more features from a claimed combination can in some cases be excised
from the combination, and the claimed combination may be directed to a
subcombination or variation of a subcombination.
[0105]Similarly, while operations are depicted in the drawings in a
particular order, this should not be understand as requiring that such
operations be performed in the particular order shown or in sequential
order, or that all illustrated operations be performed, to achieve
desirable results. In certain circumstances, multitasking and parallel
processing may be advantageous. Moreover, the separation of various
system components in the embodiments described above should not be
understood as requiring such separation in all embodiments, and it should
be understood that the described program components and systems can
generally be integrated together in a single software product or packaged
into multiple software products.
[0106]Particular embodiments of the subject matter described in this
specification have been described. Other embodiments are within the scope
of the following claims. For example, the actions recited in the claims
can be performed in a different order and still achieve desirable
results. As one example, the processes depicted in the accompanying
figures do not necessarily require the particular order shown, or
sequential order, to achieve desirable results. In certain
implementations, multitasking and parallel processing may be
advantageous.
* * * * *